﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using App_Code.consultasSql.ConsultasSeguridad;
using classAbm;
using consultasSql;
using validarDatos;

public partial class Stdby_ABM_cable : System.Web.UI.Page
{

    /*Mensajes*/

    private void mostrarMensaje(string mensaje)
    {
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        sbMensaje.Append("<script type='text/javascript'>");
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        sbMensaje.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }

    /*-----------*/

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            cargarGrilla(false, "", "", "");
            ViewState["ordenarGrilla"] = "ASC";
        }

        Usuarios usuario = (Usuarios)Session["Usuario"];
        if (usuario != null)
        {
            btnGuardar.Enabled = usuario.VerificarPermisoUsuario("ABM", false, true);
        }
    }

    protected void Grilla_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes["onmouseover"] = "javascript:setMouseOverColor(this);";
            e.Row.Attributes["onmouseout"] = "javascript:setMouseOutColor(this);";
        }
    }

    //cargo grilla
    private void cargarGrilla(bool estado, string movex, string descripcion, string ordenar)
    {
        try
        {
            Grilla.DataSource = new CConsultaCable().select(estado, movex, descripcion, ordenar);
            Grilla.DataBind();
        }
        catch { }
    }

     //cambio de pagina grilla
    protected void grilla_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            Grilla.PageIndex = e.NewPageIndex;
            cargarGrilla(seleccionDeBaja(), txtBuscaMovex.Text, txtBuscaDescripcion.Text, "");
        }
        catch { }
    }

    //ordenar grilla
    protected void Grilla_Sorting(object sender, GridViewSortEventArgs e)
    {
        try
        {
            cargarGrilla(seleccionDeBaja(), txtBuscaMovex.Text, txtBuscaDescripcion.Text, e.SortExpression + " " + ordenarGrilla());
        }
        catch { }
    }

    private string ordenarGrilla()
    {
        try
        {
            if (!String.IsNullOrEmpty(ViewState["ordenarGrilla"].ToString()))
                ViewState["ordenarGrilla"] = (ViewState["ordenarGrilla"].ToString() == "DESC" ? "ASC" : "DESC");
            else
                ViewState["ordenarGrilla"] = "ASC";
        }
        catch { }

        return ViewState["ordenarGrilla"].ToString();
    }


    //refrescar
    protected void refrescar()
    {
        try
        {
            int paginaActual = Grilla.PageIndex; //guardo la pagina actual

            cargarGrilla(seleccionDeBaja(), txtBuscaMovex.Text, txtBuscaDescripcion.Text, "");

            Grilla.PageIndex = paginaActual; //cargo el número de la pagina cargada
        }
        catch { }
    }

    //selección De Baja
    private bool seleccionDeBaja()
    {
        bool estado = false;

        switch (ddlBusquedaInactivo.SelectedIndex)
        {
            case 0:
                estado = false;
                break;
            case 1:
                estado = true;
                break;
        }

        return estado;
    }

    //buscar
    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        cargarGrilla(seleccionDeBaja(), txtBuscaMovex.Text, txtBuscaDescripcion.Text, "");
    }

    //cancelar
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        limpiarCampos();
        Grilla.SelectedIndex = -1;
        lblNuevo.Text = "Nuevo";
    }

    //modificar
    protected void Grilla_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            if (!(Convert.ToString(Session["filaSeleccionada"]) == Convert.ToString(Grilla.SelectedIndex)))
            {
                Session["filaSeleccionada"] = Grilla.SelectedIndex.ToString();
                cargarCampos();
                lblNuevo.Text = "Modificar";
            }
            else
            {
                lblNuevo.Text = "Nuevo";
                limpiarCampos();
            }

        }
        catch { }
    }


    private void cargarCampos()
    {
        try
        {
            if (Grilla.SelectedRow != null)
            {
                GridViewRow grilla = Grilla.SelectedRow;

                txtMovex.Text = HttpUtility.HtmlDecode(grilla.Cells[1].Text);
                txtDescripcion.Text = HttpUtility.HtmlDecode(grilla.Cells[2].Text);
                txtCableMM.Text = HttpUtility.HtmlDecode(grilla.Cells[3].Text);


                if (grilla.Cells[4].Text.Equals("LV"))
                {
                    rblVoltage.SelectedIndex = 1;
                }
                else
                {
                    rblVoltage.SelectedIndex = 0;
                }

                txtTotalMts.Text = HttpUtility.HtmlDecode(grilla.Cells[5].Text);
                

                CheckBox check = (CheckBox)grilla.Cells[6].Controls[0];

                if (!check.Checked)
                {
                    cbxInactivo.Checked = false;
                }
                else
                {
                    cbxInactivo.Checked = true;
                }

            }
        }
        catch { }
    }

    private void limpiarCampos()
    {
        try
        {
            lblMovex.Visible = false;
            lblDescripcion.Visible = false;
            lblCableMM.Visible = false;
            lblTotalMts.Visible = false;

            txtMovex.ToolTip = null;
            txtDescripcion.ToolTip = null;
            txtCableMM.ToolTip = null;
            txtTotalMts.ToolTip = null;

            txtMovex.Text = "";
            txtCableMM.Text = "";
            txtTotalMts.Text = "";
            txtDescripcion.Text = "";
            cbxInactivo.Checked = false;

            Grilla.SelectedIndex = -1;
            Session["filaSeleccionada"] = -1;
        }
        catch { }
    }


    //guardar
    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        
        if (Grilla.SelectedRow != null)
        {
            string campoGrilla = HttpUtility.HtmlDecode(Grilla.SelectedRow.Cells[1].Text);

            if (string.Compare(campoGrilla, txtMovex.Text.Trim()) != 0) //no son iguales
            {
                if (existeRegistro())//consulto si ya esta usado el registro
                {
                    actualizar();//no existe el registro
                }

            }
            else
            {
                actualizar();
            }
        }
        else
        {
            if (existeRegistro())
            {
                actualizar();
            }
        }

    }

    //comprueba los campos
    private void actualizar()
    {
        if (comprobarCampos())
        {
            updateInsert();
        }
    }

    CExisteRegistro existe = new CExisteRegistro();


    //comprueba si existe el registro
    private bool existeRegistro()
    {
        if (existe.existeRegistro("Cable", "Movex", txtMovex.Text.Trim()))
        {
            txtMovex.ToolTip = CMensajes.mensajeMovexDuplicado();
            lblMovex.Visible = true;
            return false;
        }
        return true;
    }


    //comprobar campos
    private bool comprobarCampos()
    {
        lblMovex.Visible = false;
        lblDescripcion.Visible = false;
        lblCableMM.Visible = false;
        lblTotalMts.Visible = false;

        txtMovex.ToolTip = null;
        txtDescripcion.ToolTip = null;
        txtCableMM.ToolTip = null;
        txtTotalMts.ToolTip = null;
    
        bool bandera = true;

        try
        {
            if (!CValidaDatos.validaPalabras(txtMovex.Text.Trim()) || String.IsNullOrEmpty(txtMovex.Text.Trim()))
            {
                txtMovex.ToolTip = CMensajes.mensajeValidaPalabra();
                lblMovex.Visible = true;
                bandera = false;
            }

            if (!CValidaDatos.validaPalabras(txtDescripcion.Text.Trim()))
            {
                txtDescripcion.ToolTip = CMensajes.mensajeValidaPalabra();
                lblDescripcion.Visible = true;
                bandera = false;
            }

            if (!CValidaDatos.validaEntero(txtCableMM.Text.Trim()) || String.IsNullOrEmpty(txtCableMM.Text.Trim()))
            {
                txtCableMM.ToolTip = CMensajes.mensajeValidaNumero();
                lblCableMM.Visible = true;
                bandera = false;
            }

            if (!CValidaDatos.validaDecimal(txtTotalMts.Text.Trim()) || String.IsNullOrEmpty(txtTotalMts.Text.Trim()))
            {
                txtTotalMts.ToolTip = CMensajes.mensajeValidaNumero();
                lblTotalMts.Visible = true;
                bandera = false;
            }

        }
        catch 
        {
            bandera = false;
        }

        return bandera;
    }

    //update o insertObjeto_Accesorios
    private void updateInsert()
    {
        try
        {

            CCable objeto = new CCable();

            objeto.Movex = txtMovex.Text.Trim();
            objeto.Descripcion = txtDescripcion.Text.Trim();
            objeto.CableMM = txtCableMM.Text.Trim();
            objeto.TotalMts = txtTotalMts.Text.Trim();

            switch (rblVoltage.SelectedIndex)
            {
                case 0:
                    objeto.Voltage = "HV";
                    break;
                case 1:
                    objeto.Voltage = "LV";
                    break;
                default:
                    objeto.Voltage = "HV";
                    break;
            }

            objeto.DeBaja = Convert.ToBoolean(cbxInactivo.Checked);

            CConsultaCable consulta = new CConsultaCable();


            if (Grilla.SelectedRow != null)
            {
                objeto.Id = Convert.ToInt32(Grilla.DataKeys[Grilla.SelectedRow.RowIndex].Value);

                if (consulta.update(objeto))
                {
                    mostrarMensaje(CMensajes.mensajeOperacionExitosa());
                    limpiarCampos();
                    refrescar();
                    lblNuevo.Text = "Nuevo";
                }
                else
                {
                    mostrarMensaje(CMensajes.mensajeOperacionFallida());
                }
            }
            else
            {
                if (consulta.insert(objeto))
                {
                    mostrarMensaje(CMensajes.mensajeOperacionExitosa());
                    limpiarCampos();
                    refrescar();
                }
                else
                {
                    mostrarMensaje(CMensajes.mensajeOperacionFallida());
                }
                
            }

        }
        catch
        {
            mostrarMensaje(CMensajes.mensajeOperacionFallida());
        }
    }

}